SPDX-FileCopyrightText: 2014 Geoffrey Minne SPDX-FileCopyrightText: 2024 AlICe laboratory https://alicelab.be
SPDX-License-Identifier: GPL-3.0-or-later
BLENDER r60995 MANIPULATIONS D OBJETS SOUS MAC OSX
import bpy
import random
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete(use_global=False)_________________# ________________# # # # _ _ _ __ # I I I I I I I I I I I I I I I I # I I I I I I I I I I I I I I I I I # I I I I II I_I I I I I I I I_I I # I I I I I I I I I I I I I I I I # I___I I I I I I I_ I_ I I I I I I # # # # _____________PAR ALDO VAN EYCK_# _____________________#
----------------------------------# GENERER UN MODULE DE CIRCULATION # ----------------------------------#
def Circulation(pos_X, pos_Y, pos_Z, dim_X, dim_Y, dim_z):
bpy.ops.mesh.primitive_cube_add(location=(pos_X, pos_Y, pos_Z))
bpy.ops.transform.resize(value=(0.5, 0.5, 0.5))
brasX = random.randint(3, 4)
brasY = random.randint(4, 5)
for j in range(1, brasX):
Circulation(j, 0, 0.5, 0.5, 0.5, 0.5)
for i in range(0, brasY):
Circulation(0, i, 0.5, 0.5, 0.5, 0.5)Coupoles
def Coupoles(pos_X, pos_Y, pos_Z, dim_X, dim_Y, dim_z):
bpy.ops.mesh.primitive_uv_sphere_add(location=(pos_X, pos_Y, pos_Z))
bpy.ops.transform.resize(value=(-0.488145, -0.488145, -0.488145))
for j in range(1, brasX):
Coupoles(j, 0, 0.9, 0.5, 0.5, 0.5)
for i in range(0, brasY):
Coupoles(0, i, 0.9, 0.5, 0.5, 0.5)_________________#
---------------------# GENERER LE MODULE 1 # ---------------------#
def Module1(pos_X, pos_Y, pos_Z, dim_X, dim_Y, dim_z):
bpy.ops.mesh.primitive_cube_add(location=(pos_X, pos_Y, pos_Z))
bpy.ops.transform.resize(value=(0.5, 0.5, 0.5))def Coupoles2(pos_X, pos_Y, pos_Z, dim_X, dim_Y, dim_z):
bpy.ops.mesh.primitive_uv_sphere_add(location=(pos_X, pos_Y, pos_Z))
bpy.ops.transform.resize(value=(-0.488145, -0.488145, -0.488145))rdc = random.randint(5, 7)
for m in range(1, random.randint(5, 7)):
Module1(m, 1, 0.5, 0.5, 0.5, 0.5)
Module1(m, 2, 0.5, 0.5, 0.5, 0.5)
Coupoles2(m, 1, 0.9, 0.5, 0.5, 0.5)
Coupoles2(m, 2, 0.9, 0.5, 0.5, 0.5)niveau1 = random.randint(2, 3)
niveau1bis = random.randint(3, 5)
for n in range(1, niveau1):
for q in range(1, niveau1bis):
Module1(q, n, 1.5, 0.5, 0.5, 0.5)Coupoles2(q,n,1.9,0.5,0.5,0.5)
_________________#
-----------------------------------------# REPETER LE MODULE 1 AVEC SA CIRCULATION # -----------------------------------------#
bpy.ops.object.select_all(action="SELECT")
MaxDuplication = random.randint(4, 5)
for nombreDuplication in range(1, MaxDuplication):
bpy.ops.object.duplicate_move(
OBJECT_OT_duplicate={"linked": False, "mode": "TRANSLATION"},
TRANSFORM_OT_translate={
"value": (brasX, -brasY + 1, 0),
"constraint_axis": (False, False, False),
"constraint_orientation": "GLOBAL",
"mirror": False,
"proportional": "DISABLED",
"proportional_edit_falloff": "SMOOTH",
"proportional_size": 1,
"snap": False,
"snap_target": "CLOSEST",
"snap_point": (0, 0, 0),
"snap_align": False,
"snap_normal": (0, 0, 0),
"texture_space": False,
"remove_on_cancel": False,
"release_confirm": False,
},
)_________________# _________________#
------------------------------------# GENERER UN MODULE DE CIRCULATION 2 # ------------------------------------#
def Circulation2(pos_X, pos_Y, pos_Z, nom):
bpy.ops.mesh.primitive_cube_add(location=(pos_X, pos_Y, pos_Z))
bpy.ops.transform.resize(value=(0.5, 0.5, 0.5))
bpy.context.object.name = nom
brasX2 = 4
brasY2 = random.choice([5, 6])
listBoitesBras = []brasX2
for j in range(0, brasX2):
Circulation2(-j, 0, 0.5, "brasx" + str(j))
listBoitesBras.append("brasx" + str(j))brasY2
for i in range(0, brasY2):
Circulation2(-3, -i, 0.5, "brasy" + str(i))
listBoitesBras.append("brasy" + str(i))COUPOLES
def Coupoles3(pos_X, pos_Y, pos_Z, nom2):
bpy.ops.mesh.primitive_uv_sphere_add(location=(pos_X, pos_Y, pos_Z))
bpy.ops.transform.resize(value=(-0.488145, -0.488145, -0.488145))
bpy.context.object.name = nom2
listBoitesBras2 = []
for j in range(0, brasX2):
Coupoles3(-j, 0, 0.9, "brasx2" + str(j))
listBoitesBras2.append("brasx2" + str(j))
for i in range(0, brasY2):
Coupoles3(-3, -i, 0.9, "brasy2" + str(i))
listBoitesBras2.append("brasy2" + str(i))--------------------------------------# DUPLIQUER LE MODULE DE CIRCULATION 2 # --------------------------------------#
selection des cubes comprenant les bras
bpy.ops.object.select_all(action="DESELECT")
for x in range(0, len(listBoitesBras)):
bpy.data.objects[listBoitesBras[x]].select = True
for x in range(0, len(listBoitesBras2)):
bpy.data.objects[listBoitesBras2[x]].select = Trueduplication positive
MaxDuplication2 = random.randint(3, 5)
for nombreDuplication2 in range(1, MaxDuplication2):
bpy.ops.object.duplicate_move(
OBJECT_OT_duplicate={"linked": False, "mode": "TRANSLATION"},
TRANSFORM_OT_translate={
"value": (-brasX2 + 1, -brasY2 + 1, 0),
"constraint_axis": (False, False, False),
"constraint_orientation": "GLOBAL",
"mirror": False,
"proportional": "DISABLED",
"proportional_edit_falloff": "SMOOTH",
"proportional_size": 1,
"snap": False,
"snap_target": "CLOSEST",
"snap_point": (0, 0, 0),
"snap_align": False,
"snap_normal": (0, 0, 0),
"texture_space": False,
"remove_on_cancel": False,
"release_confirm": False,
},
)duplication negative
bpy.ops.object.select_all(action="DESELECT")
for x in range(0, len(listBoitesBras)):
bpy.data.objects[listBoitesBras[x]].select = True
for x in range(0, len(listBoitesBras2)):
bpy.data.objects[listBoitesBras2[x]].select = True
MaxDuplication4 = random.randint(1, 2)
for nombreDuplication2 in range(0, MaxDuplication4):
bpy.ops.object.duplicate_move(
OBJECT_OT_duplicate={"linked": False, "mode": "TRANSLATION"},
TRANSFORM_OT_translate={
"value": (brasX2 - 1, brasY2 - 1, 0),
"constraint_axis": (False, False, False),
"constraint_orientation": "GLOBAL",
"mirror": False,
"proportional": "DISABLED",
"proportional_edit_falloff": "SMOOTH",
"proportional_size": 1,
"snap": False,
"snap_target": "CLOSEST",
"snap_point": (0, 0, 0),
"snap_align": False,
"snap_normal": (0, 0, 0),
"texture_space": False,
"remove_on_cancel": False,
"release_confirm": False,
},
)_________________#
---------------------# GENERER LE MODULE 2 # ---------------------#
def Module2(pos_X, pos_Y, pos_Z):
bpy.ops.mesh.primitive_cube_add(location=(pos_X, pos_Y, pos_Z))
bpy.ops.transform.resize(value=(0.5, 0.5, 0.5))
Lou = random.randint(3, 5)
Module2(-Lou - 0.5, 1.5, 0.5)
bpy.ops.transform.resize(value=(Lou * 2, 2, 1))EXTRUSION
depla1 = random.randint(-2, 2)
taille1 = random.randint(2, 3)
taille2 = random.choice([1.5, 2])
taille3 = random.choice([0.5, 1])
if taille2 > 1.5:
taille3 = 1
else:
taille3 = 0.5
bpy.ops.object.editmode_toggle()
bpy.ops.mesh.extrude_region_move(
MESH_OT_extrude_region={"mirror": False},
TRANSFORM_OT_translate={
"value": (0, 2, 0),
"constraint_axis": (False, False, True),
"constraint_orientation": "NORMAL",
"mirror": False,
"proportional": "DISABLED",
"proportional_edit_falloff": "SMOOTH",
"proportional_size": 1,
"snap": False,
"snap_target": "CLOSEST",
"snap_point": (0, 0, 0),
"snap_align": False,
"snap_normal": (0, 0, 0),
"texture_space": False,
"remove_on_cancel": False,
"release_confirm": False,
},
)
bpy.ops.transform.translate(
value=(depla1, taille2, 0),
constraint_axis=(False, False, False),
constraint_orientation="VIEW",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SPHERE",
proportional_size=1.1,
)
bpy.ops.transform.resize(
value=(taille1 / 6, taille3, 1),
constraint_axis=(False, False, False),
constraint_orientation="VIEW",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SPHERE",
proportional_size=1.1,
)
bpy.ops.object.editmode_toggle()-----------------------# DUPLIQUER LE MODULE 2 # -----------------------#
(Selon le nombre Maximum de duplication du module de circulation 2 !!!)
duplication positive
for nombreDuplication5 in range(1, MaxDuplication2 + 1):
bpy.ops.object.duplicate_move(
OBJECT_OT_duplicate={"linked": False, "mode": "TRANSLATION"},
TRANSFORM_OT_translate={
"value": (-brasX2 + 1, -brasY2 + 1, 0),
"constraint_axis": (False, False, False),
"constraint_orientation": "GLOBAL",
"mirror": False,
"proportional": "DISABLED",
"proportional_edit_falloff": "SMOOTH",
"proportional_size": 1,
"snap": False,
"snap_target": "CLOSEST",
"snap_point": (0, 0, 0),
"snap_align": False,
"snap_normal": (0, 0, 0),
"texture_space": False,
"remove_on_cancel": False,
"release_confirm": False,
},
)duplication negative
bpy.ops.object.duplicate_move(
OBJECT_OT_duplicate={"linked": False, "mode": "TRANSLATION"},
TRANSFORM_OT_translate={
"value": (
(brasX2 - 1) * (MaxDuplication2 + 1),
(brasY2 - 1) * (MaxDuplication2 + 1),
0,
),
"constraint_axis": (False, False, False),
"constraint_orientation": "GLOBAL",
"mirror": False,
"proportional": "DISABLED",
"proportional_edit_falloff": "SMOOTH",
"proportional_size": 1,
"snap": False,
"snap_target": "CLOSEST",
"snap_point": (0, 0, 0),
"snap_align": False,
"snap_normal": (0, 0, 0),
"texture_space": False,
"remove_on_cancel": False,
"release_confirm": False,
},
)
for nombreDuplication6 in range(0, MaxDuplication4 - 1):
bpy.ops.object.duplicate_move(
OBJECT_OT_duplicate={"linked": False, "mode": "TRANSLATION"},
TRANSFORM_OT_translate={
"value": (brasX2 - 1, brasY2 - 1, 0),
"constraint_axis": (False, False, False),
"constraint_orientation": "GLOBAL",
"mirror": False,
"proportional": "DISABLED",
"proportional_edit_falloff": "SMOOTH",
"proportional_size": 1,
"snap": False,
"snap_target": "CLOSEST",
"snap_point": (0, 0, 0),
"snap_align": False,
"snap_normal": (0, 0, 0),
"texture_space": False,
"remove_on_cancel": False,
"release_confirm": False,
},
)-----------------------# DEUXIEME EXCROISSANCE # -----------------------#
if brasY2 is 6:
bpy.ops.mesh.primitive_cube_add(
radius=1,
view_align=False,
enter_editmode=False,
location=(0, 0, 0.5),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
bpy.ops.transform.resize(
value=(1, 0.5, 0.5),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
)
bpy.ops.transform.translate(
value=(-5, 0, 0),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
)
for nombreDuplication6 in range(1, MaxDuplication2 + 1):
bpy.ops.object.duplicate_move(
OBJECT_OT_duplicate={"linked": False, "mode": "TRANSLATION"},
TRANSFORM_OT_translate={
"value": (-brasX2 + 1, -brasY2 + 1, 0),
"constraint_axis": (False, False, False),
"constraint_orientation": "GLOBAL",
"mirror": False,
"proportional": "DISABLED",
"proportional_edit_falloff": "SMOOTH",
"proportional_size": 1,
"snap": False,
"snap_target": "CLOSEST",
"snap_point": (0, 0, 0),
"snap_align": False,
"snap_normal": (0, 0, 0),
"texture_space": False,
"remove_on_cancel": False,
"release_confirm": False,
},
)
bpy.ops.object.duplicate_move(
OBJECT_OT_duplicate={"linked": False, "mode": "TRANSLATION"},
TRANSFORM_OT_translate={
"value": (
(brasX2 - 1) * (MaxDuplication2 + 1),
(brasY2 - 1) * (MaxDuplication2 + 1),
0,
),
"constraint_axis": (False, False, False),
"constraint_orientation": "GLOBAL",
"mirror": False,
"proportional": "DISABLED",
"proportional_edit_falloff": "SMOOTH",
"proportional_size": 1,
"snap": False,
"snap_target": "CLOSEST",
"snap_point": (0, 0, 0),
"snap_align": False,
"snap_normal": (0, 0, 0),
"texture_space": False,
"remove_on_cancel": False,
"release_confirm": False,
},
)
for nombreDuplication6 in range(0, MaxDuplication4 - 1):
bpy.ops.object.duplicate_move(
OBJECT_OT_duplicate={"linked": False, "mode": "TRANSLATION"},
TRANSFORM_OT_translate={
"value": (brasX2 - 1, brasY2 - 1, 0),
"constraint_axis": (False, False, False),
"constraint_orientation": "GLOBAL",
"mirror": False,
"proportional": "DISABLED",
"proportional_edit_falloff": "SMOOTH",
"proportional_size": 1,
"snap": False,
"snap_target": "CLOSEST",
"snap_point": (0, 0, 0),
"snap_align": False,
"snap_normal": (0, 0, 0),
"texture_space": False,
"remove_on_cancel": False,
"release_confirm": False,
},
)----------# COUPOLES # ----------#
def Coupoles4(pos_X, pos_Y, pos_Z, nom4):
bpy.ops.mesh.primitive_uv_sphere_add(location=(pos_X, pos_Y, pos_Z))
bpy.ops.transform.resize(value=(-0.488145, -0.488145, -0.488145))
bpy.context.object.name = nom4
listBoitesBras3 = []
listBoitesBras4 = []
for w in range(1, Lou * 2 + 1):
Coupoles4(-w, 2, 0.9, "brasx3" + str(w))
listBoitesBras3.append("brasx3" + str(w))
for v in range(1, Lou * 2 + 1):
Coupoles4(-v, 1, 0.9, "brasx4" + str(v))
listBoitesBras4.append("brasx4" + str(v))dupliquer les coupoles
for x in range(0, len(listBoitesBras3)):
bpy.data.objects[listBoitesBras3[x]].select = True
for x in range(0, len(listBoitesBras4)):
bpy.data.objects[listBoitesBras4[x]].select = Truepositif
for nombreDuplication5 in range(1, MaxDuplication2 + 1):
bpy.ops.object.duplicate_move(
OBJECT_OT_duplicate={"linked": False, "mode": "TRANSLATION"},
TRANSFORM_OT_translate={
"value": (-brasX2 + 1, -brasY2 + 1, 0),
"constraint_axis": (False, False, False),
"constraint_orientation": "GLOBAL",
"mirror": False,
"proportional": "DISABLED",
"proportional_edit_falloff": "SMOOTH",
"proportional_size": 1,
"snap": False,
"snap_target": "CLOSEST",
"snap_point": (0, 0, 0),
"snap_align": False,
"snap_normal": (0, 0, 0),
"texture_space": False,
"remove_on_cancel": False,
"release_confirm": False,
},
)negatif
bpy.ops.object.duplicate_move(
OBJECT_OT_duplicate={"linked": False, "mode": "TRANSLATION"},
TRANSFORM_OT_translate={
"value": (
(brasX2 - 1) * (MaxDuplication2 + 1),
(brasY2 - 1) * (MaxDuplication2 + 1),
0,
),
"constraint_axis": (False, False, False),
"constraint_orientation": "GLOBAL",
"mirror": False,
"proportional": "DISABLED",
"proportional_edit_falloff": "SMOOTH",
"proportional_size": 1,
"snap": False,
"snap_target": "CLOSEST",
"snap_point": (0, 0, 0),
"snap_align": False,
"snap_normal": (0, 0, 0),
"texture_space": False,
"remove_on_cancel": False,
"release_confirm": False,
},
)
for nombreDuplication6 in range(0, MaxDuplication4 - 1):
bpy.ops.object.duplicate_move(
OBJECT_OT_duplicate={"linked": False, "mode": "TRANSLATION"},
TRANSFORM_OT_translate={
"value": (brasX2 - 1, brasY2 - 1, 0),
"constraint_axis": (False, False, False),
"constraint_orientation": "GLOBAL",
"mirror": False,
"proportional": "DISABLED",
"proportional_edit_falloff": "SMOOTH",
"proportional_size": 1,
"snap": False,
"snap_target": "CLOSEST",
"snap_point": (0, 0, 0),
"snap_align": False,
"snap_normal": (0, 0, 0),
"texture_space": False,
"remove_on_cancel": False,
"release_confirm": False,
},
)_________________# _________________# _________________# _________________# _________________# _________________#
-----------------------------# CREATION DES ZONES COMMUNES # -----------------------------#
Barrette gauche 1
bpy.ops.mesh.primitive_cube_add(
view_align=False,
enter_editmode=False,
location=(0, 0, 0.5),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
bpy.ops.transform.resize(
value=(1, 4, 0.5),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
)
bpy.ops.transform.translate(
value=(brasX + 0.5, -brasY - 2.5, 0),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
)Coupoles
for n in range(1, 3):
for q in range(1, 8):
Coupoles2(n + (brasX + 0.5) - 1.5, q + (-brasY / 2 - 2.5) - 6.5, 0.9, 1, 1, 1)__________________#
Barrette gauche 2
bpy.ops.mesh.primitive_cube_add(
view_align=False,
enter_editmode=False,
location=(0, 0, 0.5),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
bpy.ops.transform.resize(
value=(1, 2, 0.5),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
)
bpy.ops.transform.translate(
value=((brasX * 2) + 0.5, (-brasY * 2) - 0.5, 0),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
)Coupoles
for n in range(1, 3):
for q in range(1, 5):
Coupoles2(n + (brasX * 2) - 1, q + (-brasY * 2) - 3, 0.9, 1, 1, 1)__________________#
Barrette gauche 3
test2 = random.choice([0.5, 1])
if brasX > 3:
test2 is 1
else:
test2 is 0.5
bpy.ops.mesh.primitive_cube_add(
view_align=False,
enter_editmode=False,
location=(0, 0, 0.5),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
bpy.ops.transform.resize(
value=(test2, 1, 0.5),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
)
bpy.ops.transform.translate(
value=((brasX * 1.5) + 0.5, (-brasY * 1.5) - 1.5, 0),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
)__________________#
Barrette gauche 4
test3 = random.choice([3, 4, 5, 6])
bpy.ops.mesh.primitive_cube_add(
view_align=False,
enter_editmode=False,
location=(0, 0, 0.5),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
bpy.ops.transform.resize(
value=(test3, 1, 0.5),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
)
bpy.ops.transform.translate(
value=((brasX * 2), (-brasY * 2.5) - 1, 0),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
)
LouMarine = random.choice([9, 10])
if test3 > 5:
LouMarine = 11Coupoles
for n in range(1, LouMarine):
for q in range(1, 3):
Coupoles2(n + (brasX * 2) - 5, q + (-brasY * 2.5) - 2.5, 0.9, 1, 1, 1)____________________#
Barette droite 1
test = random.choice([1, 2.5])
bpy.ops.mesh.primitive_cube_add(
view_align=False,
enter_editmode=False,
location=(0, 0, 0.5),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
bpy.ops.transform.resize(
value=(1, 4, 0.5),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
)
bpy.ops.transform.translate(
value=((-brasX2 * 1) - 0.5, (-brasY2 * 1) - 3.5, 0),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
)Coupoles
for n in range(1, 3):
for q in range(1, 10):
Coupoles2(n + (-brasX2 * 2) + 2, q + (-brasY2 * 2) - 3, 0.9, 1, 1, 1)____________________#
Barette droite 2
bpy.ops.mesh.primitive_cube_add(
view_align=False,
enter_editmode=False,
location=(0, 0, 0.5),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
bpy.ops.transform.resize(
value=(0.5, 3, 0.5),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
)
bpy.ops.transform.translate(
value=((-brasX2 * 2), (-brasY2 * 2) - 1.5, 0),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
)Coupoles
for n in range(1, 2):
for q in range(1, 7):
Coupoles2(n + (-brasX2 * 2) - 1, q + (-brasY2 * 2) - 5, 0.9, 1, 1, 1)____________________#
Barette droite 3
bpy.ops.mesh.primitive_cube_add(
view_align=False,
enter_editmode=False,
location=(0, 0, 0.5),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
bpy.ops.transform.resize(
value=(3, 1, 0.5),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
)
bpy.ops.transform.translate(
value=((-brasX2 * 1) - 0.5, (-brasY2 * 1.5) - 6, 0),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
)Coupoles
for n in range(1, 7):
for q in range(1, 3):
Coupoles2(n + (-brasX2 * 1) - 4, q + (-brasY2 * 1.5) - 7.5, 0.9, 1, 1, 1)____________________#
Barrete bas 1
taille1 = random.choice([1, 2])
bpy.ops.mesh.primitive_cube_add(
view_align=False,
enter_editmode=False,
location=(0, 0, 0.5),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
bpy.ops.transform.resize(
value=(2, 2, 0.5),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
)
bpy.ops.transform.translate(
value=((brasX2 * 2) - 3.5, (brasY2 * 2) - 4.5, 0),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
)Coupoles
for n in range(1, 5):
for q in range(1, 5):
Coupoles2(n + (brasX2 * 2) - 6, q + (brasY2 * 2) - 7, 0.9, 1, 1, 1)_________________# _________________# _________________# _________________# _________________# _________________#
---------------------------------# CREATION DE LA GALETTE NIVEAU 1 # ---------------------------------#
epaisseur = random.choice([0.5, 1])
positionY = random.choice([0, 1, 2, 3, 4])
positionX = random.choice([3, 4, 5])
longueur = random.choice([5, 6])
bpy.ops.mesh.primitive_cube_add(
view_align=False,
enter_editmode=False,
location=(0, 0, 0.5),
layers=(
True,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
),
)
bpy.ops.transform.resize(
value=(longueur, epaisseur, 0.5),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
)
bpy.ops.transform.translate(
value=((-brasX2) + positionX, (-brasY2) - positionY, 1),
constraint_axis=(False, False, False),
constraint_orientation="GLOBAL",
mirror=False,
proportional="DISABLED",
proportional_edit_falloff="SMOOTH",
proportional_size=1,
)
bpy.ops.object.select_all(action="DESELECT")